String হল Java-এর সবচেয়ে ব্যবহৃত ডেটা টাইপগুলির একটি, যা টেক্সট বা চরিত্রের সিকোয়েন্স প্রতিনিধিত্ব করে। Java-তে স্ট্রিং তৈরি করার দুটি প্রধান উপায় রয়েছে:
এটি খুবই গুরুত্বপূর্ণ কারণ String ক্লাসের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, যা পারফরম্যান্স এবং মেমরি ব্যবস্থাপনা প্রভাবিত করতে পারে।
String Literal হল স্ট্রিং তৈরি করার একটি পদ্ধতি যেখানে স্ট্রিংটি সরাসরি String Pool (string constant pool) এ সংরক্ষণ করা হয়। যখন আপনি একটি স্ট্রিং literal ব্যবহার করেন, তখন Java এর String Pool চেক করে দেখতে যে স্ট্রিংটি আগে থেকে সেখানে রয়েছে কিনা। যদি থাকে, তাহলে পূর্ববর্তী অবজেক্টটি রিটার্ন করা হয়, অন্যথায় নতুন অবজেক্ট তৈরি করা হয় এবং স্ট্রিং পুলে রাখা হয়।
String Pool হল Java-এ একটি বিশেষ জায়গা যেখানে সমস্ত স্ট্রিং literals সংরক্ষণ করা হয়। এটি মেমরি ব্যবস্থাপনার জন্য সহায়ক এবং একই মানের স্ট্রিং-এর জন্য পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।
public class StringLiteralExample {
public static void main(String[] args) {
String str1 = "Hello"; // String literal
String str2 = "Hello"; // Same literal, same object in string pool
System.out.println(str1 == str2); // Output: true
}
}
Explanation:
"Hello"
স্ট্রিং literal ব্যবহার করেন, এটি String Pool এ যোগ হয়।"Hello"
ব্যবহার করেন, Java String Pool চেক করে এবং পূর্বের স্ট্রিং অবজেক্টটি রিটার্ন করে। তাই str1 == str2
সত্য হবে।Advantages:
new
Keyword):String Object তৈরি করার সময় new
কিওয়ার্ড ব্যবহার করা হয়, যা একটি নতুন String object তৈরি করে। এটি স্ট্রিং পুলে স্টোর হয় না, বরং একটি নতুন অবজেক্ট তৈরি হয়। এতে memory overhead এবং performance issues হতে পারে, কারণ নতুন অবজেক্ট তৈরি করার জন্য অতিরিক্ত মেমরি এবং সময় লাগে।
public class StringObjectExample {
public static void main(String[] args) {
String str1 = new String("Hello"); // New String object
String str2 = new String("Hello"); // Another new String object
System.out.println(str1 == str2); // Output: false
}
}
Explanation:
"Hello"
স্ট্রিং literal ব্যবহার করা হলেও, new String("Hello")
এর মাধ্যমে একটি নতুন অবজেক্ট তৈরি হচ্ছে। এতে স্ট্রিং পুলে অবজেক্ট সংরক্ষণ করা হয় না।str1 == str2
এ false
রিটার্ন হবে কারণ দুইটি আলাদা অবজেক্ট তৈরি হয়েছে, যদিও তাদের মান সমান।Disadvantages:
new
কিওয়ার্ড ব্যবহার করে স্ট্রিং তৈরি করা হয়, যার ফলে একটি নতুন অবজেক্ট তৈরি হয়, যা মেমরি বেশি ব্যবহার করে।Criteria | String Literal | String Object (using new ) |
---|---|---|
Memory Efficiency | স্ট্রিং পুল ব্যবহার করে, একাধিক স্ট্রিং একই অবজেক্টের মাধ্যমে ব্যবহার করা যায়। | নতুন অবজেক্ট তৈরি হয় এবং স্ট্রিং পুলে সংরক্ষিত হয় না। |
Performance | দ্রুত, কারণ String Pool ব্যবহার করা হয় এবং এক্সিস্টিং অবজেক্ট ব্যবহার হয়। | ধীর, কারণ নতুন অবজেক্ট তৈরি হয়। |
Reusability | একই মানের স্ট্রিং বারবার ব্যবহৃত হলে এটি String Pool থেকে পুনরায় ব্যবহার করা হয়। | নতুন অবজেক্ট তৈরি হওয়ায় পুনঃব্যবহারযোগ্যতা কম। |
Equality Check | == অপারেটর ব্যবহার করে সত্য বা মিথ্যা চেক করলে একে অপরের সাথে সরাসরি তুলনা করা হয়। | == অপারেটর ব্যবহার করলে false রিটার্ন করবে, কারণ আলাদা অবজেক্ট তৈরি হয়। |
new String()
):new
কিওয়ার্ড ব্যবহার করে তৈরি করা হয়) একাধিক নতুন অবজেক্ট তৈরি করে, যার ফলে মেমরি বেশি ব্যবহার হয় এবং পারফরম্যান্স কম হতে পারে।Java-তে স্ট্রিং ব্যবহারের ক্ষেত্রে String Literal ব্যবহারের জন্য একটি ভালো অভ্যাস, কিন্তু যখন আপনি নির্দিষ্টভাবে নতুন স্ট্রিং অবজেক্ট তৈরি করতে চান, তখন String Object ব্যবহার করা যেতে পারে।
Read more